#include "stack.h"

#include <assert.h>
#include <string.h>

static void
test()
{
    Stack_T stk = Stack_new();
    assert(Stack_empty(stk) == 1);
    Stack_free(&stk);

    stk = Stack_new();
    Stack_push(stk, "hello");
    Stack_push(stk, "how");
    Stack_push(stk, "are");

    assert(Stack_empty(stk) == 0);
    Stack_free(&stk);

     
    stk = Stack_new();
    Stack_push(stk, "hello");
    Stack_push(stk, "how");
    assert(strcmp(Stack_pop(stk), "how") == 0);

    Stack_push(stk, "are");
    assert(strcmp(Stack_pop(stk), "are") == 0);

    assert(strcmp(Stack_pop(stk), "hello") == 0);
    assert(Stack_empty(stk) == 1);
    Stack_free(&stk);
}

int main()
{
    test();
    return 0;
}
